package com.ruoyi.vote.admin.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 投票 - 活动管理业务对象 vote_activity
 *
 * @author 筑巢
 * @date 2023-07-17
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class VoteActivityBo extends BaseEntity {

    /**
     * 主键
     */
    @NotNull(message = "主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 活动类型
     */
    @NotNull(message = "活动类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer aType;

    /**
     * banner图
     */
    private String bannerUrl;

    /**
     * 背景图
     */
    private String bjUrl;

    /**
     * 活动标题
     */
    @NotBlank(message = "活动标题不能为空", groups = { AddGroup.class, EditGroup.class })
    private String title;

    /**
     * 活动描述
     */
    @NotBlank(message = "活动描述不能为空", groups = { AddGroup.class, EditGroup.class })
    private String notes;

    /**
     * 背景音乐
     */
    private String music;

    /**
     * 奖品选项
     */
    private String jpOption;

    /**
     * 证书模板
     */
    private Long cId;

    /**
     * 报名审核
     */
    @NotNull(message = "报名审核不能为空", groups = { AddGroup.class, EditGroup.class })
    private String isAuditing;

    /**
     * 报名开始时间
     */
    @NotNull(message = "报名开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date signStartTime;

    /**
     * 报名结束时间
     */
    @NotNull(message = "报名结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @FutureOrPresent(message = "报名结束时间必须为当前时间或之后", groups = { AddGroup.class, EditGroup.class })
    private Date signStopTime;

    /**
     * 投票开始时间
     */
    @NotNull(message = "投票开始时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date voteStartTime;

    /**
     * 投票结束时间
     */
    @NotNull(message = "投票结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @FutureOrPresent(message = "投票结束时间必须为当前时间或之后", groups = { AddGroup.class, EditGroup.class })
    private Date voteStopTime;

    /**
     * 活动结束时间
     */
    @NotNull(message = "活动结束时间不能为空", groups = { AddGroup.class, EditGroup.class })
    @FutureOrPresent(message = "活动结束时间必须为当前时间或之后", groups = { AddGroup.class, EditGroup.class })
    private Date balanceTime;

    /**
     * 活动状态
     */
    @NotNull(message = "活动状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private Integer status;

    /**
     * 结算状态
     */
    private Integer jsStatus;

    /**
     * 总票数
     */
    private Long ticket;
    /**
     * 分享次数 (预留)
     */
    private Long share;
    /**
     * 热度
     */
    private Long welcome;
}
